#!/usr/bin/env python
# -*- coding:utf-8 -*-
#1.写出三元运算的基本格式及作用？
'''
v1 = a if a>b else b
作用：用一段简单的代码表示条件语句
'''
#2.什么是匿名函数？
'''
匿名函数就是lambda函数
作用：用一段简单的代码表示函数
'''
#3.尽量多的列举你了解的内置函数？【默写】
'''
强制转换：int / str / list / bool / dict / set / tuple
数学相关：max / min / abs / divmod /float / pow / round
进制相关：bin / int / oct / hex
输入输出：print / input 
其他:len / id / type / range
高级函数:map / filter / reduce
编码相关：chr / ord / 
'''
#4.filter/map/reduce函数的作用分别是什么？
'''
map(函数，迭代对象) 第一参数必须是函数。第二个参数必须是可迭代类型（可以被for循环）
作用：循环第二个参数中的每一个元素，然后让每个元素执行函数得到的结果保存到列表中，并返回
filter（函数，迭代对象)
作用：循环可迭代类型中的每一元素，然后让每个元素执行函数，通过筛选，将结果保存到列表中，并返回。
reduce（函数，可迭代对象）
作用：函数必须要接受两个参数，循环可迭代对象的每个元素，第一次执行函数，将前两个数据作为参数去执行函数，后面的每一次执行函数，都是把上一次执行函数的返回值和循环的下一个数据作为参数去执行函数，
最后得到一个结果并返回
'''
#5.看代码写结果
'''
def func(*args,**kwargs):
    print(args,kwargs)



# a. 执行 func(12,3,*[11,22]) ，输出什么？  #(12,3,11,22)
# b. 执行 func('alex','武沛齐',),name='eric') # (('alex','武沛齐',)) {'name':'eric'}
'''
#6.看代码分析结果
'''
def func(arg):
    return arg.pop(1)

result = func([11,22,33,44])
print(result)#  22
'''
#7.看代码分析结果
'''
func_list = []

for i in range(10):
    func_list.append(lambda :i)

v1 = func_list[0]()#9
v2 = func_list[5]()#9
print(v1,v2)
'''
#8.看代码分析结果
'''
func_list = []

for i in range(10):
    func_list.append(lambda x:x+i)

v1 = func_list[0](2) #11
v2 = func_list[5](1) #10
print(v1,v2)
'''
#9.看代码分析结果
'''
func_list = []

for i in range(10):
    func_list.append(lambda x:x+i)

for i in range(0,len(func_list)):
    result = func_list[i](i)
    print(result)
#0 2 4 6 8 10 12 14 16 18
'''
#10.看代码分析结果
'''
def f1():
    print('f1')

def f2():
    print('f2')
    return f1

func = f2()
result = func()
print(result)
#  'f2', 'f1' None
'''
#11.看代码分析结果【面试题】
'''
def f1():
    print('f1')
    return f3()

def f2():
    print('f2')
    return f1

def f3():
    print('f3')

func = f2()
result = func()
print(result)
#'f2'  'f1'   'f3' None
'''

#12看代码分析结果
'''
name = '景女神'

def func():
    def inner():
        print(name)
    return inner()

v = func()
print(v)

'''
#13看代码分析结果
'''
name = '景女神'

def func():
    def inner():
        print(name)
        return "老男孩"
    return inner()

v = func()
print(v)
#'景女神'  '老男孩’  
'''
#14.看代码分析结果
'''
name = '景女神'

def func():
    def inner():
        print(name)
        return '老男孩'
    return inner

v = func()
result = v()
print(result)
#景女神  老男孩
'''
#15.看代码分析结果
'''
def func():
    name = '武沛齐'
    def inner():
        print(name)
        return '老男孩'
    return inner

v1 = func()
v2 = func()
print(v1(),v2())
#inner inner
'''
#16.看代码写结果
'''
def func(name):
    def inner():
        print(name)
        return '老男孩'
    return inner

v1 = func('金老板')
v2 = func('alex')
print(v1,v2)
#inner inner
'''
#17.看代码写结果
'''
def func(name=None):
    if not name:
        name= '武沛齐'
    def inner():
        print(name)
        return '老男孩'
    return inner

v1 = func()
v2 = func('alex')
print(v1(),v2())
# inner  v1如果执行 '武沛齐' 老男孩
#inner   v2如果执行  'alex'  老男孩
'''
#18.看代码写结果【面试题】
'''
def func(name):
    v = lambda x:x+name
    return v

v1 = func('武沛齐')
v2 = func('alex')
v3 = v1('银角')
v4 = v2('金角')
print(v1,v2,v3,v4)
#v1  打印v的内存地址    v3:银角  武沛齐  金角  alex
'''
#19看代码写结果
'''
NUM = 100
result = []
for i in range(10):
    func = lambda : NUM      # 注意：函数不执行，内部代码不会执行。
    result.append(func)

print(i)  #9
print(result) # [func,func, .......func]
v1 = result[0]() #100
v2 = result[9]() #100
print(v1,v2)
'''
#20.看代码写结果【面试题】
'''
result = []
for i in range(10):
    func = lambda : i      # 注意：函数不执行，内部代码不会执行。
    result.append(func)

print(i) #9
print(result) # [func地址.........func地址]
v1 = result[0]() #9
v2 = result[9]() #9
print(v1,v2)
'''
#21看代码分析结果【面试题】
'''
def func(num):
    def inner():
        print(num)
    return inner

result = []
for i in range(10):
    f = func(i)
    result.append(f)

print(i)#9
print(result)# [inner地址......inner地址]
v1 = result[0]()  #0 None
v2 = result[9]()  #9  None
print(v1,v2)
'''
#22.程序设计题
'''
请设计实现一个商城系统，商城主要提供两个功能：商品管理、会员管理。

商品管理：

查看商品列表
根据关键字搜索指定商品
录入商品
会员管理：【无需开发，如选择则提示此功能不可用，正在开发中，让用户重新选择】

需求细节：

1.启动程序让用户选择进行商品管理 或 会员管理，如：

2.用户选择 【1】 则进入商品管理页面，进入之后显示商品管理相关的菜单，如： 
3.用户选择【2】则提示此功能不可用，正在开发中，让用户重新选择。
4.如果用户在【商品管理】中选择【1】，则按照分页去文件 goods.txt 中读取所有商品，并全部显示出来【分页功能可选】。
5.如果用户在【商品管理】中选择【2】，则让提示让用户输入关键字，输入关键字后根据商品名称进行模糊匹配，如：
6.如果用户在【商品管理】中选择【3】，则提示让用户输入商品名称、价格、数量 然后写入到 goods.txt 文件，如： 


'''
'''
def func1():
    print('********欢迎使用老子的购物商城********')
    print('1.商品管理')
    print('2.会员管理（不可选，正在开发中）')
    v1 = input('请选择（输入N返回上一级）：')
    if v1 =='1':
        return func2()
    if v1 == 'n':
        return
    if v1 == '2':
        print('此功能不可用，正在开发中，请重新选择：')
        return func1()

def func2():
    print('********欢迎使用老子的购物商城【商品管理】********')
    print('1.查看商品列表')
    print('2.根据关键字搜索指定商品')
    print('3.录入商品')
    v2=input('请选择（输入N返回上一级）：')
    if v2 =='n':
        return func1()
    if v2 =='1':
        return func3()
    if v2 =='2':
        return func4()
    if v2 =='3':
        return func5()
def func3():
    with open('goods.txt',mode='r',encoding='utf-8') as f1:
        goods1=f1.read()
        print(goods1)
def func4():
    print('********欢迎使用老子的购物商城【商品管理】【根据关键字搜索】********')
    v4=input('请输入要查询的关键字（输入N返回上一级):')
    with open('goods.txt', mode='r', encoding='utf-8') as f1:
        for line in f1:
            if v4 in line:
                print(line)
        if v4=='n':
            return func2()
def func5():
    print('********欢迎使用老子的购物商城【商品管理】【录入商品】********')
    v5 = input('请输入商品名称（输入N返回上一级):')
    v6 = input('请输入商品价格：')
    v7 = input('请输入商品数量：')
    v8=[v5,v6,v7]
    v9='  '.join(v8)
    with open('goods.txt', mode='a', encoding='utf-8') as f1:
        f1.write(v9)
    if v5=='n':
        return func2()
func1()

'''





